
import javax.swing.JLabel;

/**
 * Clase que perimite trabajar con el cronometro para el juego
 *
 * @author Matías Díaz
 * @author Sergio Flores
 */
public class JCronometro implements Runnable
{

    Thread crono;
    JLabel tiempo = new JLabel ();
    JLabel tiempo2 = new JLabel ();
    int minutos = 0, segundos = 0, horas = 0;

    /**
     * Contructor que crea un cronometro.
     */
    public JCronometro ()
    {
        crono = new Thread ( this );
        this.tiempo.setToolTipText ( CommandName.TIME );
        this.tiempo2.setToolTipText ( CommandName.TIME );
        crono.start ();
    }

    /**
     * Metodo que retorna el label del tiempo
     *
     * @return el tiempo
     */
    public JLabel retornaTiempo ()
    {
        return tiempo;
    }

    /**
     * Metodo que retorna el label del tiempo2
     *
     * @return el tiempo2
     */
    public JLabel retornaTiempoDos ()
    {
        return tiempo2;
    }

    /**
     * Metodo que permite detener el cronometro.
     */
    public void stop ()
    {
        crono.stop ();
    }

    /**
     * Metodo que permite pausar el cronometro del juego.
     */
    public void pause ()
    {
        crono.suspend ();
    }

    /**
     * Metodo que nos permite reanudar la cuenta del coronometro.
     */
    public void continuar ()
    {
        crono.resume ();
    }

    /**
     * Metodo que administra la visibilidad del tiempo
     *
     * @param opcion por medio de esta opcion se puede decir
     * si se quiere ver el tiempo o no.
     */
    public void setTiempoVisible ( boolean opcion )
    {
        tiempo.setVisible ( opcion );
    }

    /**
     * Este metodo nos permite darle el inicio al cronometro,
     * para que comience a contar.
     */
    @Override
    public void run ()
    {
        boolean opcion = true;
        String cero = new String ( ": 0" );
        try
        {
            for ( ;; )
            {

                if ( segundos == 59 )
                {
                    segundos = 0;
                    minutos++;
                }
                if ( minutos == 59 )
                {
                    minutos = 0;
                    horas++;
                }
                segundos++;
                if ( segundos < 10 && minutos < 10 && horas < 10 && opcion )
                {

                    //tiempo.setText("Time: 0" + horas + ": 0" + minutos + ": 0" + segundos);
                    tiempo.setText ( new String ( "Time" ).concat ( cero ).concat ( Integer.toString ( horas ) ).concat ( cero ).concat ( Integer.toString ( minutos ) ).concat ( cero ).concat ( Integer.toString ( segundos ) ) );
                    tiempo2.setText ( "0" + horas + ":" + "0" + minutos + ":" + "0" + segundos );
                    opcion = false;

                }
                if ( segundos < 10 && minutos < 10 && opcion )
                {
                    //tiempo.setText("Time: " + horas + ":" + "0" + minutos + ":" + "0" + segundos);
                    tiempo.setText ( new String ( "Time" ).concat ( Integer.toString ( horas ) ).concat ( cero ).concat ( Integer.toString ( minutos ) ).concat ( cero ).concat ( Integer.toString ( segundos ) ) );
                    tiempo2.setText ( horas + ":" + "0" + minutos + ":" + "0" + segundos );
                    opcion = false;

                }
                if ( minutos < 10 && horas < 10 && opcion )
                {
                    //tiempo.setText("Time: " + "0" + horas + ":" + "0" + minutos + ":" + segundos);
                    tiempo.setText ( new String ( "Time" ).concat ( cero ).concat ( Integer.toString ( horas ) ).concat ( cero ).concat ( Integer.toString ( minutos ) ).concat ( Integer.toString ( segundos ) ) );
                    tiempo2.setText ( "0" + horas + ":" + "0" + minutos + ":" + segundos );
                    opcion = false;

                }
                if ( segundos < 10 && horas < 10 && opcion )
                {
                    tiempo.setText ( "Time: " + "0" + horas + ":" + minutos + ":" + "0" + segundos );
                    tiempo2.setText ( "0" + horas + ":" + minutos + ":" + "0" + segundos );
                    opcion = false;
                }
                if ( minutos < 10 && opcion )
                {
                    tiempo.setText ( "Time: " + horas + ":" + "0" + minutos + ":" + segundos );
                    tiempo2.setText ( horas + ":" + "0" + minutos + ":" + segundos );
                    opcion = false;
                }
                if ( segundos < 10 && opcion )
                {
                    tiempo.setText ( "Time: " + horas + ":" + minutos + ":" + "0" + segundos );
                    tiempo2.setText ( horas + ":" + minutos + ":" + "0" + segundos );
                    opcion = false;
                }
                if ( horas < 10 && opcion )
                {
                    tiempo.setText ( "Time: " + "0" + horas + ":" + minutos + ":" + segundos );
                    tiempo2.setText ( "0" + horas + ":" + minutos + ":" + segundos );
                    opcion = false;
                }
                else
                {
                    tiempo.setText ( "Time: " + horas + ":" + minutos + ":" + segundos );
                    tiempo2.setText ( horas + ":" + minutos + ":" + segundos );
                }
                opcion = true;
                Thread.sleep ( 1000 );
            }
        }
        catch ( InterruptedException e )
        {
            System.out.println ( e.getMessage () );
        }
    }
}